今天要介紹的是日本的 CTF 隊伍 TokyoWesterns
,先提醒隊伍名稱 正確拼法是 Tokyo 和 Westerns 字首大寫、中間沒有空白、最後要加複數 s,可以用 TW 縮寫表示,其他的寫法都是錯的,他們的成員 icchy 曾經在 twitter 上說太多人寫錯他們的名字......XD
隊伍名稱的由來據說是因為成員大部分都住在東京的西邊,之前曾開玩笑說這樣 HITCON 的成員也可以加入他們,台灣也是在東京的西邊 XD
TokyoWesterns 是由三個日本隊伍合併而來,分別是 MMA
、tuat_mcc
、CureSecure
,其中比較有名氣的是 MMA,在還沒完全合併之前就有在 2015 年辦過屬於自己的 MMA CTF,2016 年 MMA CTF 開了 alias TokyoWesterns CTF 並且正式合併隊伍,算正式的出現在世人眼前被大家注意到,到目前為止是日本排名第一的 CTF 隊伍
2018 年應該算是 TokyoWesterns 成績最好的一年,拿下了幾個知名 CTF 的第一名,像是:HITB CTF Quals、ASIS CTF Quals 還有 WCTF 大師挑戰賽,其中難度最高的應該是 WCTF,一度 ctftime 上的成績衝到第一名,但很可惜沒有保持到最後 QQ
BTW,WCTF 是由 360 負責舉辦,特別之處是在於:
KepResolve
拿下 (PPP 和 DEFKOR 聯隊......),亞軍和季軍是 Cykor
和 HITCON
HITCON 217
,亞軍 ToykoWesterns
,季軍 Shellphish Repeat
(shellphish + Eat Pwn Sleep Repeat 聯隊)TokyoWesterns
奪冠,亞軍是 Dragon Sector
,季軍 Cykor
217
,亞軍是 Dragon Sector
,季軍 r3kapig
Gyotaku The Flag
,雖然出了點差錯導致 unintented solution 解掉變成送分題 QQ,但在賽後的評分上,innovative 維度得到了很高的評價TokyoWesterns 應該是國際上跟 HITCON 關係最好的一組 XD 到對方的地盤都會當地陪帶大家吃吃喝喝,也比較常交流 CTF 的非技術心得 (簡稱八卦),但就不方便在 ithome 上寫出來了....XD
這題是上述提到今年 WCTF 個人認為最獨具匠心的一道題目,反過來利用系統保護機制來達成 side channel attack,詳細的原理可以參考這份投影片:https://westerns.tokyo/wctf2019-gtf/wctf2019-gtf-slides.pdf
簡介一下這道題目:
POST /gyotaku
保存,但因為沒有 viewer 所以也看不到內容unintented solution 是在 header 中加入 X-Real-IP: 127.0.0.1
,由於這題是使用 go 的某個 web framework 所寫的,出題者也沒注意到竟然會吃 X-Real-IP
... 幫 QQ,附上出題者的自嘲 XD
2017: 7dcs (Crypto, Web, Reverse, Pwn) → 0 solved
2018: f (Forensics, Reverse, Web) → 1 solved
2019: Gyotaku The Flag (Web, Misc) → everyone solved
這題的環境是架在 Windows 上,並且啟用預設所有的 security feature,因此也包含 Windows Defender,會做以下的行為保護服務:
我們可以透上傳 EICAR 標準反病毒測試文件
的 payload 來觸發 Windows Defender 的保護,但要如何利用這個 feature 呢 ? 在檢測過程中或使用到內部自帶的 js engine mpengine.dll
,我們可以讓他跑一段 js code 來達到 side channel attack 來 leak flag,基本概念是利用 eval("EICA"+input)
的結果判斷會不會被 Windows Defender 給偵測到,如果被偵測到就表示 input 的開頭是 R
leak flag 的 js code 如下,每個 index 需要執行 256 次來猜是什麼 byte,可以利用 binary search 加速搜尋,如果最後 mal 組出的值是 EICAR
就會觸發 Windows Defender,讓 GET /gyotaku/id
頁面變成 500 Internal Server Error,可以用此判斷是不是猜中 flag,這題還要根據 Gyotaku 的結構來把 flag 塞進 HTML body tag 裡面,具體做法就省略不提,大家可以自行參考出題者的投影片
var body = document.body.innerHTML;
var mal = "EICA";
var n = body[$idx].charCodeAt(0);
mal = mal + String.fromCharCode(n^$c);
eval(mal);
Gyotaku 這題發明了一種全新的 web 攻擊技術,就好比 House of Orange 在 binary 的利用手法一樣創新,後來這題有在 ToykoWesterns CTF 2019 重新出一次,相信之後會有更多人開始挖掘這種攻擊手法的利用思路 :D